1. Field of the Invention
The present invention is related to virtualization technology, and more particularly, to using a GPU for support and acceleration of Virtual Machines (VMs).
2. Description of the Related Art
The industry trend of virtualization and isolation of computer system resources presents two major challenges—virtualization at a software level and virtualization at a hardware level. A Virtual Machine (VM) is a type of an isolated Virtual Environment where multiple VMs can run on the same physical machine simultaneously. Each VM instance has a set of its own software components and uses hardware modules of the physical machine where the VM resides.
Typically, there are multiple VMs created on a host operating system. In such system, some resources of the host operating system can be isolated and allocated for running each of the VMs. An example of this type of system is a computing environment provided by VMware™. The VMware™ solution provides standardized isolated secured computing environments. This product is typically used as an enterprise-level solution, where a number of VMware™ Virtual Machines are distributed throughout the computer system. However, the VMware™ solution does not provide adequate support for using system hardware for support and acceleration of the VMs.
Virtualization allows running a number of VMs on the same physical machine. Examples of conventional virtualization solutions are virtual systems by VMware™, Parallels Software International, Inc., Microsoft Virtual Server, Microsoft/Citrix Terminal Server, Virtuozzo™ by SWSoft (Parallels), Xen systems by XenSource, Solaris Zones, etc. All of these systems, however, provide only limited support for a low level (i.e., hardware) virtualization.
With Virtual Machine (VM) technology, a user can create and run multiple virtual environments on a physical server at the same time. Each virtual environment (such as a VM), requires its own operating system (OS) and can run applications independently. The VM software provides a layer between the computing, storage, and networking hardware and the software that runs on it.
A Virtual Machine technology requires employing hardware of a real physical machine or a processor for support of a VM. A hardware element that is increasingly used for acceleration of physical machines is a Graphic Processing Unit (GPU). General-purpose computing on graphics processing units (GPGPU, also referred to as GPGP) is a technique of employing the GPU, which typically handles only computations related to computer graphics, for performing computations for other applications traditionally handled by the CPU.
The addition of programmable stages and higher precision arithmetic functionality to rendering pipelines allows software developers to use stream processing on non-graphical data. Traditionally, GPU functionality has been very limited. In fact, for many years, the GPU was only used to accelerate certain parts of the graphics pipeline. Some improvements in GPU programmability have been recently made so that the GPUs can be used for supporting different type of non-graphical applications.
However, the GPUs are only used for supporting the applications running on physical machines. The GPU typically supports only one operating system of the physical computer. Virtualization allows running a number of VMs on a physical machine. Each of the VMs needs acceleration and support of a single GPU.
Therefore, it is desirable to use a GPU for supporting and accelerating a number of the VMs running on a physical machine. Accordingly, there is a need in the art for a system and method that addresses the need for employing the GPU for support and acceleration of the VMs.